#include "../import/head.h"
#include "sys_data.h"
#include "../data_struct/head.h"
#include "../global/head.h"
#include "../wnd_login/head.h"
#include "../wnd_main/head.h"
#include "../macro/head.h"
#include "../msg/head.h"
#include "wnd_evt.h"

namespace xos_sgsj
{
    sys_data::sys_data()
    {
		m_nCurIntervalS = 0;
		m_bIsRunning = false;
		m_bQuiting = false;
        m_bQuit = false;
		m_bUserQuit = false;
		m_pLoginDlg = 0;
		m_pImpl = 0;
        m_pPool = 0;
		m_pApp = 0;
    }

    sys_data::~sys_data()
    {
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 

	int sys_data::notify( data * pData )
	{
		int ret = 0;

		wnd_evt * pEvt = new wnd_evt( WND_USER_MSG );
		pEvt->m_pData = pData;
		QCoreApplication::postEvent( m_pApp, pEvt );
		pData = 0;

		return ret;
	}

    int sys_data::init()
    {
        int ret = 0;

        if( 0 == ret )
        {
            ret = m_os.init();
        }

		if( 0 == ret )
		{
			m_pPool = new pool();
		}

		if( 0 == ret )
		{
			ret = m_config.load();
		}

		if( 0 == ret )
		{
			ret = m_settings.init();
		}

		if( 0 == ret )
		{
			m_os.m_pHeart->add_acceptor( &m_os, m_config.heart_check_interval_ms );
			m_os.m_pHeart->set_interval( m_config.sys_heart_interval_ms );
		}

        return ret;
    }

    int sys_data::term()
    {
        int ret = 0;

		m_settings.term();

		if( m_pPool )
		{
			m_pPool->term();
			delete m_pPool;
			m_pPool = 0;
		}

		m_os.term();

        return ret;
    }

} // xos_sgsj
